package com.cy.pj.commo.pool;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
@Scope("prototype")//这个注解，属性表示这个类对象未非单例对象，程序启动时，会加载进内存，但是不会创建对象放如对象池
public class ObjectPoolPrototype {//这个类用来测试非单例对象
    public ObjectPoolPrototype(){
        System.out.println("ObjectPoolPrototype is created");
    }

    //注意点：当使用@scope注解声明该类并不是单例类的时候，不需要同时加@Lazy注解来表示该类是一个延迟加载类，因为只有单例类会在陈旭初始化的时候创建对象并加入到对应的对象池中


    @PostConstruct//这个注解表示下面的方法在一个类进行初始化的时候执行
    public void init(){
        System.out.println("ObjectPool is init");
    }

    @PreDestroy//这个类表示在对象池使用结束，销毁时执行
    public void destory(){
        System.out.println("destory");
    }
}
